#include "client.h"

// 处理客户端逻辑的主函数
void handle_client_logic(ClientInfo *client)
{
    int choice;
    char command[MAX_COMMAND_LEN];

    while (1)
    {
        if (client->is_logged_in)
        {
            // 用户已登录，显示命令提示符
            printf("%s@ftp> ", client->username);
            fgets(command, MAX_COMMAND_LEN, stdin);
            // 这行代码用于移除用户输入命令末尾的换行符
            // strcspn(command, "\n") 函数返回 command 字符串中第一个换行符的位置
            // 将该位置的字符替换为 null 终止符 ('\0' 或 0)
            // 这样可以确保 command 字符串不包含末尾的换行符，便于后续处理
            command[strcspn(command, "\n")] = 0;

            // 检查是否为退出命令
            if (strcmp(command, "exit") == 0)
            {
                break;
            }

            // 处理用户输入的命令
            process_command(client, command);
        }
        else
        {
            // 用户未登录，显示登录菜单
            printf("1. 注册\n2. 登录\n3. 退出\n请选择: ");
            scanf("%d", &choice);

            switch (choice)
            {
            case 1:
                // 处理用户注册
                if (register_user(client) == 0)
                {
                    printf("注册成功\n");
                }
                else
                {
                    printf("注册失败\n");
                }
                break;
            case 2:
                // 处理用户登录
                if (login_user(client) == 0)
                {
                    printf("登录成功\n");
                }
                else
                {
                    printf("登录失败\n");
                }
                break;
            case 3:
                // 退出程序
                return;
            default:
                // 处理无效输入
                printf("无效选择,请重试\n");
            }
        }
    }
}